iT邦幫忙

2025 iThome 鐵人賽

DAY 15
1
AI & Data

動不動就要 ETL? 以Trino為例-淺談從資料倉儲到湖倉系列 第 15

Day 15 - 部署與 CICD,Trino 在雲端 (四)

  • 分享至 

  • xImage
  •  

15

環境切分

自上一篇中對 Trino cluster 的 helm chart 設定告一段落後,我們就可以來切分開發環境,並依照團隊需求去制定開發以及部署 Trino 的流程,本文會以筆者專案使用的環境切分及部署流程做介紹:

Dev environment split

  1. 將部署的 helm chart 依不同環境置放 (如上圖)
  2. 共用設定的部分放在 shared 路徑
  3. 測試環境設定放在 staging;正式環境設定放在 production
  4. 部署時會以shared 路徑裡的設定優先對官方 helm chart 做渲染,再根據不同環境將不同的參數進行第二次覆蓋

舉例而言,可以在 productiontrino-elt.yaml 放入欲覆蓋的參數,並且指定環境名稱為 production,如此部署文件可依環境切分的乾淨且易讀,使修改部分部署參數變成一件容易的事 :

server:
  node:
    # 指定環境名稱 production
    environment: production
  config:
    query:
      # 覆蓋掉 shared 的記憶體上限設定
      maxMemory: "93GB"
  exchangeManager:
    name: filesystem
    baseDir: s3://sldatacenter-trino-fault-tolerant-production

CI/CD 腳本運行

有了容易修改且可依環境切分的 Helm Chart 後,我們需要一個可以進行 CI/CD 的腳本,雖說是 CI/CD ,其實只包含如何持續部署 ( CD ) 不同設定 Trino Cluster 的腳本,也是本文欲探討的重點。

由於我們使用的部署工具是 Bitbucket Pipeline,首先需在 deployment pipeline 裡面定義部署 trino-elt 的步驟,包含了:

  1. 設定初始化變數 (variables)
  2. 自動部署至 Staging 環境
  3. 手動部署至 Production 環境
# bitbucket-pipelines.yml
sl-trino-elt-latest:
  - step: *set-variables
  - step: &deploy-trino-elt-stg
      <<: *deploy-trino-elt
      name: "[DEPLOY-STG] trino-elt"
      deployment: staging
  - step: &deploy-trino-elt-prod
      <<: *deploy-trino-elt
      name: "[DEPLOY-PROD] trino-elt"
      deployment: production
      trigger: manual

可以看到 pipeline 裡面不管是部署到 Staging 還是 Production 都使用了相同的錨點 &deploy-trino-elt,在這段錨點裡面做了幾件事:

  1. 執行 *OIDC 腳本取得 IAM 權限
  2. 執行環境變數 (env) 設定腳本
  3. 執行部署腳本登入 EKS
  4. 執行部署腳本部署 trino-elt 並指定 image 版本
# bitbucket-pipelines.yml
- step: &deploy-trino-elt
    name: "[DEPLOY] trino-elt"
    oidc: true
    script:
      - *oidc-script
      - *env-script
      - ./scripts/deploy.sh login-eks
      - ./scripts/deploy.sh trino-elt ${IMAGE_TAG}

*OIDC(OpenID Connect)
是一種基於 OAuth 2.0 的身份認證協議
可以讓 Bitbucket 安全地向 AWS 證明:『我符合某個合法身份(IAM),不需要密碼。』
這樣就不必把 AWS secret 寫進環境變數造成資安風險。

明日預告

系列文明日《部署與 CICD,Trino 在雲端 (五)》,將延續前篇,介紹 trino-elt 的部署流程,並說明如何進行 Trino 的版本管理。

Know me more

My Linkedin: https://www.linkedin.com/in/benny0624/
My Medium: https://hndsmhsu.medium.com/


上一篇
Day 14 - 部署與 CICD,Trino 在雲端 (三)
下一篇
Day 16 - 部署與 CICD,Trino 在雲端 (五)
系列文
動不動就要 ETL? 以Trino為例-淺談從資料倉儲到湖倉29
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言